finalize-staged: Don't listen to `SIGTERM`, just let kernel exit us
authorColin Walters <walters@verbum.org>
Tue, 30 Aug 2022 20:23:38 +0000 (16:23 -0400)
committerColin Walters <walters@verbum.org>
Tue, 30 Aug 2022 21:50:03 +0000 (17:50 -0400)
Followup from discussion in
https://github.com/ostreedev/ostree/pull/2544#discussion_r958840936

This is more efficient; no need to have the kernel context switch
us in at shutdown time just so we can turn around and call
`exit()`.

src/ostree/ot-admin-builtin-finalize-staged.c

index ed4f20d7592c5bd99b9fe64de250471be847ccdc..e408f44730397ae0317f20415bbfaf71cd915f4a 100644 (file)
@@ -41,16 +41,6 @@ static GOptionEntry options[] = {
   { NULL }
 };
 
-static gboolean
-sigterm_cb (gpointer user_data)
-{
-  gboolean *running = user_data;
-  g_print ("Received SIGTERM, exiting\n");
-  *running = FALSE;
-  g_main_context_wakeup (NULL);
-  return G_SOURCE_REMOVE;
-}
-
 /* Called by ostree-finalize-staged.service, and in turn
  * invokes a cmdprivate function inside the shared library.
  */
@@ -94,14 +84,10 @@ ot_admin_builtin_finalize_staged (int argc, char **argv, OstreeCommandInvocation
         return FALSE;
 
       /* We want to keep /boot open until the deployment is finalized during
-       * system shutdown, so block on SIGTERM under the assumption that it will
-       * be received when systemd stops the unit.
+       * system shutdown, so block until we get SIGTERM which systemd will send
+       * when the unit is stopped.
        */
-      gboolean running = TRUE;
-      g_unix_signal_add (SIGTERM, sigterm_cb, &running);
-      g_print ("Waiting for SIGTERM\n");
-      while (running)
-        g_main_context_iteration (NULL, TRUE);
+      pause ();
     }
   else
     {